using System;
using System.Linq;
using System.Runtime.Serialization;
using System.Data.Objects.DataClasses;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Collections.Generic;
using System.Text;
using Acme.Northwind.EFDAL.Interfaces;

namespace Acme.Northwind.EFDAL.Interfaces.Entity
{
	/// <summary>
	/// This is the base interface for the EF entity for Category
	/// </summary>
	public partial interface ICategory : nHydrate.EFCore.DataAccess.IBusinessObject, nHydrate.EFCore.DataAccess.INHEntityObject, System.ComponentModel.IDataErrorInfo, System.IEquatable<Acme.Northwind.EFDAL.Interfaces.Entity.ICategory>, nHydrate.EFCore.DataAccess.IAuditable
	{
		#region Properties

		/// <summary>
		/// The property that maps back to the database 'Categories.CategoryID' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DisplayName("CategoryID")]
		int CategoryID { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Categories.CategoryName' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("CategoryName")]
		string CategoryName { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Categories.Description' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("Description")]
		string Description { get; set; }

		/// <summary>
		/// The property that maps back to the database 'Categories.Picture' field
		/// </summary>
		[System.ComponentModel.Browsable(true)]
		[System.ComponentModel.DisplayName("Picture")]
		System.Byte[] Picture { get; set; }

		/// <summary>
		/// The audit field for the 'Created By' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		string CreatedBy { get; }

		/// <summary>
		/// The audit field for the 'Created Date' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		DateTime? CreatedDate { get; }

		/// <summary>
		/// The audit field for the 'Modified By' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		string ModifiedBy { get; }

		/// <summary>
		/// The audit field for the 'Modified Date' column.
		/// </summary>
		[System.ComponentModel.Browsable(false)]
		DateTime? ModifiedDate { get; }

		#endregion

		#region Navigation Properties

		/// <summary>
		/// The back navigation definition for walking Category->Product
		/// </summary>
		[XmlIgnoreAttribute()]
		[SoapIgnoreAttribute()]
		[DataMemberAttribute()]
		[EdmRelationshipNavigationPropertyAttribute("Acme.Northwind.EFDAL.Interfaces.Entity", "FK__Product_Category", "ProductList")]
		ICollection<Acme.Northwind.EFDAL.Interfaces.Entity.IProduct> ProductList { get; }

		#endregion

	}

}

#region Metadata Class

namespace Acme.Northwind.EFDAL.Interfaces.Entity.Metadata
{
	/// <summary>
	/// Metadata class for the 'Category' entity
	/// </summary>
	public partial class CategoryMetadata : nHydrate.EFCore.DataAccess.IMetadata
	{
		#region Properties

		/// <summary>
		/// Metadata information for the 'CategoryID' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'CategoryID' is required.")]
		[System.ComponentModel.DataAnnotations.Key()]
		[System.ComponentModel.DataAnnotations.Editable(false)]
		[System.ComponentModel.ReadOnly(true)]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "CategoryID", AutoGenerateField = true)]
		public object CategoryID;

		/// <summary>
		/// Metadata information for the 'CategoryName' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Required(ErrorMessage = "'CategoryName' is required.")]
		[System.ComponentModel.DataAnnotations.StringLength(15, ErrorMessage = "The property 'CategoryName' has a maximum length of 15")]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "CategoryName", AutoGenerateField = true)]
		public object CategoryName;

		/// <summary>
		/// Metadata information for the 'Description' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.StringLength(1073741823, ErrorMessage = "The property 'Description' has a maximum length of 1073741823")]
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "Description", AutoGenerateField = true)]
		public object Description;

		/// <summary>
		/// Metadata information for the 'Picture' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.DisplayAttribute(Description = "", Name = "Picture", AutoGenerateField = true)]
		public object Picture;

		/// <summary>
		/// Metadata information for the 'CreatedBy' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.StringLength(100, ErrorMessage = "The property 'CreatedBy' has a maximum length of 100")]
		[System.ComponentModel.ReadOnly(true)]
		public object CreatedBy;

		/// <summary>
		/// Metadata information for the 'CreatedDate' parameter
		/// </summary>
		[System.ComponentModel.ReadOnly(true)]
		public object CreatedDate;

		/// <summary>
		/// Metadata information for the 'ModifiedBy' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.StringLength(100, ErrorMessage = "The property 'ModifiedBy' has a maximum length of 100")]
		[System.ComponentModel.ReadOnly(true)]
		public object ModifiedBy;

		/// <summary>
		/// Metadata information for the 'ModifiedDate' parameter
		/// </summary>
		[System.ComponentModel.ReadOnly(true)]
		public object ModifiedDate;

		/// <summary>
		/// Metadata information for the 'Timestamp' parameter
		/// </summary>
		[System.ComponentModel.DataAnnotations.Timestamp()]
		[System.ComponentModel.ReadOnly(true)]
		public object Timestamp;

		#endregion

	}

}

#endregion

